package com.clstu.draw;

import javax.imageio.stream.ImageInputStream;
import javax.swing.*;
import java.awt.*;

public class DrawCircle extends JFrame{//JFrame对应窗口，可以理解是一个画框
    //定义画板
    private MyPanel mp = null;

    public static void main(String[] args) {

        new DrawCircle();//画图不影响下一句话的执行，即这条语句没结束下一句也会执行。
        System.out.println("退出程序~~~");

    }

    public DrawCircle(){//构造器

        //初始化画板(这个时候会调用mp的paint方法,画一次坦克)
        this.mp=new MyPanel();

        //将画板嵌入到画框
        this.add(mp);

        //设置画框的大小（窗口的大小）
        this.setSize(400,300);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置点窗口的小×的时候退出程序，不然点小×也不会退出程序

        this.setVisible(true);//设置可以显示

    }
}
class MyPanel extends JPanel{

    /*
        MyPanel 对象就是一个画板
        Graphics g , g可以被理解成是一只画笔
        Graphics 提供了很多绘图方法
     */

    @Override
    public void paint(Graphics g) {//画图方法 不需要主动调用 ！！对象被new的时候会被调用一次
        /*
            在以下情况paint会被调用  ！！！

            1.窗口最小化在最大化
            2.窗口大小发生变化
            3.repaint函数被调用
         */

        super.paint(g);//调用父类的paint（）初始化

        //画一个⚪
        //System.out.println("Paint 方法被调用~~~~");
        //g.drawOval(0,0,100,100);//10表示的不是圆心的位置，是最外边距离边框的距离
        g.setColor(Color.blue);
        g.fillRect(10,10,20,110);//画坦克。
        g.fillRect(70,10,20,110);
        g.fillRect(30,50,40,40);
        g.setColor(Color.red);
        g.fillOval(30,50,40,40);
        g.fillRect(45,15,10,50);
    }
}